1 /* 2 3 Boost Software License - Version 1.0 - August 17th, 2003 4 5 Permission is hereby granted, free of charge, to any person or organization 6 obtaining a copy of the software and accompanying documentation covered by 7 this license (the "Software") to use, reproduce, display, distribute, 8 execute, and transmit the Software, and to prepare derivative works of the 9 Software, and to permit third-parties to whom the Software is furnished to 10 do so, all subject to the following: 11 12 The copyright notices in the Software and this entire statement, including 13 the above license grant, this restriction and the following disclaimer, 14 must be included in all copies of the Software, in whole or in part, and 15 all derivative works of the Software, unless such copies or derivative 16 works are solely in the form of machine-executable object code generated by 17 a source language processor. 18 19 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT 22 SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE 23 FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, 24 ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 25 DEALINGS IN THE SOFTWARE. 26 27 */ 28 29 module derelict.purple.sslconn; 30 31 import derelict.glib.gtypes; 32 import derelict.glib.glibconfig; 33 import derelict.glib.glist; 34 import derelict.purple.account; 35 import derelict.purple.proxy; 36 import derelict.purple.certificate; 37 38 extern (C): 39 40 alias _Anonymous_0 PurpleSslErrorType; 41 alias _PurpleSslConnection PurpleSslConnection; 42 alias void function (void*, _PurpleSslConnection*, ) PurpleSslInputFunction; 43 alias void function (_PurpleSslConnection*, _Anonymous_0, void*) PurpleSslErrorFunction; 44 alias _Anonymous_1 PurpleSslOps; 45 46 enum _Anonymous_0 47 { 48 PURPLE_SSL_HANDSHAKE_FAILED = 1, 49 PURPLE_SSL_CONNECT_FAILED = 2, 50 PURPLE_SSL_CERTIFICATE_INVALID = 3 51 } 52 53 struct _PurpleSslConnection 54 { 55 char* host; 56 int port; 57 void* connect_cb_data; 58 PurpleSslInputFunction connect_cb; 59 PurpleSslErrorFunction error_cb; 60 void* recv_cb_data; 61 PurpleSslInputFunction recv_cb; 62 int fd; 63 guint inpa; 64 PurpleProxyConnectData* connect_data; 65 void* private_data; 66 PurpleCertificateVerifier* verifier; 67 } 68 69 struct _Anonymous_1 70 { 71 gboolean function () init; 72 void function () uninit; 73 void function (PurpleSslConnection*) connectfunc; 74 void function (PurpleSslConnection*) close; 75 size_t function (PurpleSslConnection*, void*, size_t) read; 76 size_t function (PurpleSslConnection*, const(void)*, size_t) write; 77 GList* function (PurpleSslConnection*) get_peer_certificates; 78 void function () _purple_reserved2; 79 void function () _purple_reserved3; 80 void function () _purple_reserved4; 81 } 82 83 version(Derelict_Link_Static) 84 { 85 extern( C ) nothrow 86 { 87 gboolean purple_ssl_is_supported(); 88 const(gchar)* purple_ssl_strerror(PurpleSslErrorType error); 89 PurpleSslConnection* purple_ssl_connect(PurpleAccount* account, const(char)* host, int port, PurpleSslInputFunction func, PurpleSslErrorFunction error_func, void* data); 90 PurpleSslConnection* purple_ssl_connect_with_ssl_cn(PurpleAccount* account, const(char)* host, int port, PurpleSslInputFunction func, PurpleSslErrorFunction error_func, const(char)* ssl_host, void* data); 91 PurpleSslConnection* purple_ssl_connect_fd(PurpleAccount* account, int fd, PurpleSslInputFunction func, PurpleSslErrorFunction error_func, void* data); 92 PurpleSslConnection* purple_ssl_connect_with_host_fd(PurpleAccount* account, int fd, PurpleSslInputFunction func, PurpleSslErrorFunction error_func, const(char)* host, void* data); 93 void purple_ssl_input_add(PurpleSslConnection* gsc, PurpleSslInputFunction func, void* data); 94 void purple_ssl_close(PurpleSslConnection* gsc); 95 size_t purple_ssl_read(PurpleSslConnection* gsc, void* buffer, size_t len); 96 size_t purple_ssl_write(PurpleSslConnection* gsc, const(void)* buffer, size_t len); 97 GList* purple_ssl_get_peer_certificates(PurpleSslConnection* gsc); 98 void purple_ssl_set_ops(PurpleSslOps* ops); 99 PurpleSslOps* purple_ssl_get_ops(); 100 void purple_ssl_init(); 101 void purple_ssl_uninit(); 102 } 103 } 104 else 105 { 106 extern( C ) nothrow 107 { 108 alias da_purple_ssl_is_supported = gboolean function(); 109 alias da_purple_ssl_strerror = const(gchar)* function(PurpleSslErrorType error); 110 alias da_purple_ssl_connect = PurpleSslConnection* function(PurpleAccount* account, const(char)* host, int port, PurpleSslInputFunction func, PurpleSslErrorFunction error_func, void* data); 111 alias da_purple_ssl_connect_with_ssl_cn = PurpleSslConnection* function(PurpleAccount* account, const(char)* host, int port, PurpleSslInputFunction func, PurpleSslErrorFunction error_func, const(char)* ssl_host, void* data); 112 alias da_purple_ssl_connect_fd = PurpleSslConnection* function(PurpleAccount* account, int fd, PurpleSslInputFunction func, PurpleSslErrorFunction error_func, void* data); 113 alias da_purple_ssl_connect_with_host_fd = PurpleSslConnection* function(PurpleAccount* account, int fd, PurpleSslInputFunction func, PurpleSslErrorFunction error_func, const(char)* host, void* data); 114 alias da_purple_ssl_input_add = void function(PurpleSslConnection* gsc, PurpleSslInputFunction func, void* data); 115 alias da_purple_ssl_close = void function(PurpleSslConnection* gsc); 116 alias da_purple_ssl_read = size_t function(PurpleSslConnection* gsc, void* buffer, size_t len); 117 alias da_purple_ssl_write = size_t function(PurpleSslConnection* gsc, const(void)* buffer, size_t len); 118 alias da_purple_ssl_get_peer_certificates = GList* function(PurpleSslConnection* gsc); 119 alias da_purple_ssl_set_ops = void function(PurpleSslOps* ops); 120 alias da_purple_ssl_get_ops = PurpleSslOps* function(); 121 alias da_purple_ssl_init = void function(); 122 alias da_purple_ssl_uninit = void function(); 123 } 124 125 __gshared 126 { 127 da_purple_ssl_is_supported purple_ssl_is_supported; 128 da_purple_ssl_strerror purple_ssl_strerror; 129 da_purple_ssl_connect purple_ssl_connect; 130 da_purple_ssl_connect_with_ssl_cn purple_ssl_connect_with_ssl_cn; 131 da_purple_ssl_connect_fd purple_ssl_connect_fd; 132 da_purple_ssl_connect_with_host_fd purple_ssl_connect_with_host_fd; 133 da_purple_ssl_input_add purple_ssl_input_add; 134 da_purple_ssl_close purple_ssl_close; 135 da_purple_ssl_read purple_ssl_read; 136 da_purple_ssl_write purple_ssl_write; 137 da_purple_ssl_get_peer_certificates purple_ssl_get_peer_certificates; 138 da_purple_ssl_set_ops purple_ssl_set_ops; 139 da_purple_ssl_get_ops purple_ssl_get_ops; 140 da_purple_ssl_init purple_ssl_init; 141 da_purple_ssl_uninit purple_ssl_uninit; 142 } 143 }